<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

	<xsl:template name="text">
		<xsl:param name="accesskey"> </xsl:param>
		<xsl:param name="alt"> </xsl:param>
		<xsl:param name="class"> </xsl:param>
		<xsl:param name="disabled"> </xsl:param>
		<xsl:param name="id"> </xsl:param>
		<xsl:param name="maxlength"> </xsl:param>
		<xsl:param name="name"/>
		<xsl:param name="onblur"> </xsl:param>
		<xsl:param name="onchange"> </xsl:param>
		<xsl:param name="onclick"> </xsl:param>
		<xsl:param name="ondblclick"> </xsl:param>
		<xsl:param name="onfocus"> </xsl:param>
		<xsl:param name="onhelp"> </xsl:param>
		<xsl:param name="onkeydown"> </xsl:param>
		<xsl:param name="onkeypress"> </xsl:param>
		<xsl:param name="onkeyup"> </xsl:param>
		<xsl:param name="onmousedown"> </xsl:param>
		<xsl:param name="onmousemove"> </xsl:param>
		<xsl:param name="onmouseout"> </xsl:param>
		<xsl:param name="onmouseover"> </xsl:param>
		<xsl:param name="onmouseup"> </xsl:param>
		<xsl:param name="onselect"> </xsl:param>
		<xsl:param name="readonly"> </xsl:param>
		<xsl:param name="size"> </xsl:param>
		<xsl:param name="style"> </xsl:param>
		<xsl:param name="tabindex"> </xsl:param>
		<xsl:param name="title"> </xsl:param>
		<xsl:call-template name="html-element">
			<xsl:with-param name="element">input</xsl:with-param>
			<xsl:with-param name="accesskey" select="$accesskey"/>
			<xsl:with-param name="alt" select="$alt"/>
			<xsl:with-param name="class" select="$class"/>
			<xsl:with-param name="disabled" select="$disabled"/>
			<xsl:with-param name="id" select="$id"/>
			<xsl:with-param name="maxlength" select="$maxlength"/>
			<xsl:with-param name="name" select="$name"/>
			<xsl:with-param name="onblur" select="$onblur"/>
			<xsl:with-param name="onchange" select="$onchange"/>
			<xsl:with-param name="onclick" select="$onclick"/>
			<xsl:with-param name="ondblclick" select="$ondblclick"/>
			<xsl:with-param name="onfocus" select="$onfocus"/>
			<xsl:with-param name="onhelp" select="$onhelp"/>
			<xsl:with-param name="onkeydown" select="$onkeydown"/>
			<xsl:with-param name="onkeypress" select="$onkeypress"/>
			<xsl:with-param name="onkeyup" select="$onkeyup"/>
			<xsl:with-param name="onmousedown" select="$onmousedown"/>
			<xsl:with-param name="onmousemove" select="$onmousemove"/>
			<xsl:with-param name="onmouseout" select="$onmouseout"/>
			<xsl:with-param name="onmouseover" select="$onmouseover"/>
			<xsl:with-param name="onmouseup" select="$onmouseup"/>
			<xsl:with-param name="onselect" select="$onselect"/>
			<xsl:with-param name="readonly" select="$readonly"/>
			<xsl:with-param name="size" select="$size"/>
			<xsl:with-param name="style" select="$style"/>
			<xsl:with-param name="tabindex" select="$tabindex"/>
			<xsl:with-param name="title" select="$title"/>
			<xsl:with-param name="type">text</xsl:with-param>
			<xsl:with-param name="value" select="/root/form/*[name()=$name]"/>
		</xsl:call-template>
	</xsl:template>

	<xsl:template name="form">
		<xsl:param name="action"/>
		<xsl:param name="accept-charset"> </xsl:param>
		<xsl:param name="class"> </xsl:param>
		<xsl:param name="enctype"> </xsl:param>
		<xsl:param name="id"> </xsl:param>
		<xsl:param name="method">post</xsl:param>
		<xsl:param name="name"> </xsl:param>
		<xsl:param name="onreset"> </xsl:param>
		<xsl:param name="onsubmit"> </xsl:param>
		<xsl:param name="style"> </xsl:param>
		<xsl:param name="text"/>
		<xsl:call-template name="html-element">
			<xsl:with-param name="element">form</xsl:with-param>
			<xsl:with-param name="action" select="concat($contextPath,$action,$servletMapping)"/>
			<xsl:with-param name="accept-charset" select="$accept-charset"/>
			<xsl:with-param name="class" select="$class"/>
			<xsl:with-param name="enctype" select="$enctype"/>
			<xsl:with-param name="id" select="$id"/>
			<xsl:with-param name="method" select="$method"/>
			<xsl:with-param name="name" select="$name"/>
			<xsl:with-param name="onreset" select="$onreset"/>
			<xsl:with-param name="onsubmit" select="$onsubmit"/>
			<xsl:with-param name="style" select="$style"/>
			<xsl:with-param name="text" select="$text"/>
		</xsl:call-template>
	</xsl:template>

	<xsl:template name="link">
		<xsl:param name="accesskey"> </xsl:param>
		<xsl:param name="anchor"> </xsl:param>
		<xsl:param name="class"> </xsl:param>
		<xsl:param name="href"/>
		<xsl:param name="id"> </xsl:param>
		<xsl:param name="name"> </xsl:param>
		<xsl:param name="onblur"> </xsl:param>
		<xsl:param name="onclick"> </xsl:param>
		<xsl:param name="ondblclick"> </xsl:param>
		<xsl:param name="onfocus"> </xsl:param>
		<xsl:param name="onhelp"> </xsl:param>
		<xsl:param name="onkeydown"> </xsl:param>
		<xsl:param name="onkeypress"> </xsl:param>
		<xsl:param name="onkeyup"> </xsl:param>
		<xsl:param name="onmousedown"> </xsl:param>
		<xsl:param name="onmousemove"> </xsl:param>
		<xsl:param name="onmouseout"> </xsl:param>
		<xsl:param name="onmouseover"> </xsl:param>
		<xsl:param name="onmouseup"> </xsl:param>
		<xsl:param name="query-string"> </xsl:param>
		<xsl:param name="style"> </xsl:param>
		<xsl:param name="tabindex"> </xsl:param>
		<xsl:param name="target"> </xsl:param>
		<xsl:param name="title"> </xsl:param>
		<xsl:param name="text"/>
		<xsl:call-template name="html-element">
			<xsl:with-param name="element">a</xsl:with-param>
			<xsl:with-param name="accesskey" select="$accesskey"/>
			<xsl:with-param name="anchor" select="$anchor"/>
			<xsl:with-param name="class" select="$class"/>
			<xsl:with-param name="href" select="concat($contextPath,$href,$servletMapping,$anchor,'?',$query-string)"/>
			<xsl:with-param name="id" select="$id"/>
			<xsl:with-param name="name" select="$name"/>
			<xsl:with-param name="onblur" select="$onblur"/>
			<xsl:with-param name="onclick" select="$onclick"/>
			<xsl:with-param name="ondblclick" select="$ondblclick"/>
			<xsl:with-param name="onfocus" select="$onfocus"/>
			<xsl:with-param name="onhelp" select="$onhelp"/>
			<xsl:with-param name="onkeydown" select="$onkeydown"/>
			<xsl:with-param name="onkeypress" select="$onkeypress"/>
			<xsl:with-param name="onkeyup" select="$onkeyup"/>
			<xsl:with-param name="onmousedown" select="$onmousedown"/>
			<xsl:with-param name="onmousemove" select="$onmousemove"/>
			<xsl:with-param name="onmouseout" select="$onmouseout"/>
			<xsl:with-param name="onmouseover" select="$onmouseover"/>
			<xsl:with-param name="onmouseup" select="$onmouseup"/>
			<xsl:with-param name="query-string" select="$query-string"/>
			<xsl:with-param name="style" select="$style"/>
			<xsl:with-param name="tabindex" select="$tabindex"/>
			<xsl:with-param name="target" select="$target"/>
			<xsl:with-param name="title" select="$title"/>
			<xsl:with-param name="text" select="$text"/>
		</xsl:call-template>
	</xsl:template>

	<xsl:template name="select">
		<xsl:param name="class"> </xsl:param>
		<xsl:param name="disabled"> </xsl:param>
		<xsl:param name="id"> </xsl:param>
		<xsl:param name="multiple"> </xsl:param>
		<xsl:param name="name"/>
		<xsl:param name="onblur"> </xsl:param>
		<xsl:param name="onchange"> </xsl:param>
		<xsl:param name="onclick"> </xsl:param>
		<xsl:param name="ondblclick"> </xsl:param>
		<xsl:param name="onfocus"> </xsl:param>
		<xsl:param name="onhelp"> </xsl:param>
		<xsl:param name="onkeydown"> </xsl:param>
		<xsl:param name="onkeypress"> </xsl:param>
		<xsl:param name="onkeyup"> </xsl:param>
		<xsl:param name="onmousedown"> </xsl:param>
		<xsl:param name="onmousemove"> </xsl:param>
		<xsl:param name="onmouseout"> </xsl:param>
		<xsl:param name="onmouseover"> </xsl:param>
		<xsl:param name="onmouseup"> </xsl:param>
		<xsl:param name="size"> </xsl:param>
		<xsl:param name="style"> </xsl:param>
		<xsl:param name="tabindex"> </xsl:param>
		<xsl:param name="title"> </xsl:param>
		<xsl:param name="text"/>
		<xsl:call-template name="html-element">
			<xsl:with-param name="element">select</xsl:with-param>
			<xsl:with-param name="class" select="$class"/>
			<xsl:with-param name="disabled" select="$disabled"/>
			<xsl:with-param name="id" select="$id"/>
			<xsl:with-param name="multiple" select="$multiple"/>
			<xsl:with-param name="name" select="$name"/>
			<xsl:with-param name="onblur" select="$onblur"/>
			<xsl:with-param name="onchange" select="$onchange"/>
			<xsl:with-param name="onclick" select="$onclick"/>
			<xsl:with-param name="ondblclick" select="$ondblclick"/>
			<xsl:with-param name="onfocus" select="$onfocus"/>
			<xsl:with-param name="onhelp" select="$onhelp"/>
			<xsl:with-param name="onkeydown" select="$onkeydown"/>
			<xsl:with-param name="onkeypress" select="$onkeypress"/>
			<xsl:with-param name="onkeyup" select="$onkeyup"/>
			<xsl:with-param name="onmousedown" select="$onmousedown"/>
			<xsl:with-param name="onmousemove" select="$onmousemove"/>
			<xsl:with-param name="onmouseout" select="$onmouseout"/>
			<xsl:with-param name="onmouseover" select="$onmouseover"/>
			<xsl:with-param name="onmouseup" select="$onmouseup"/>
			<xsl:with-param name="size" select="$size"/>
			<xsl:with-param name="style" select="$style"/>
			<xsl:with-param name="tabindex" select="$tabindex"/>
			<xsl:with-param name="title" select="$title"/>
			<xsl:with-param name="text" select="$text"/>
		</xsl:call-template>
	</xsl:template>

	<xsl:template name="option">
		<xsl:param name="class"> </xsl:param>
		<xsl:param name="style"> </xsl:param>
		<xsl:param name="selected"> </xsl:param>
		<xsl:param name="value"> </xsl:param>
		<xsl:param name="text"> </xsl:param>
		<xsl:call-template name="html-element">
			<xsl:with-param name="element">option</xsl:with-param>
			<xsl:with-param name="class" select="$class"/>
			<xsl:with-param name="style" select="$style"/>
			<xsl:with-param name="selected" select="$selected"/>
			<xsl:with-param name="value" select="$value"/>
			<xsl:with-param name="text" select="$text"/>
		</xsl:call-template>
	</xsl:template>
	
	<xsl:template name="options">
		<xsl:param name="class"> </xsl:param>
		<xsl:param name="style"> </xsl:param>
		<xsl:param name="collection"/>
		<xsl:param name="selected"> </xsl:param>
		<xsl:param name="value"/>
		<xsl:param name="text"/>
		<xsl:for-each select="$collection">
			<xsl:choose>
				<xsl:when test="*[name()=$value] = /root/form/*[name()=$selected]">
					<xsl:call-template name="option">
						<xsl:with-param name="class" select="$class"/>
						<xsl:with-param name="style" select="$style"/>
						<xsl:with-param name="selected">selected</xsl:with-param>
						<xsl:with-param name="value" select="*[name()=$value]"/>
						<xsl:with-param name="text" select="*[name()=$text]"/>
					</xsl:call-template>
				</xsl:when>
				<xsl:otherwise>
					<xsl:call-template name="option">
						<xsl:with-param name="class" select="$class"/>
						<xsl:with-param name="style" select="$style"/>
						<xsl:with-param name="value" select="*[name()=$value]"/>
						<xsl:with-param name="text" select="*[name()=$text]"/>
					</xsl:call-template>
				</xsl:otherwise>
			</xsl:choose>
		</xsl:for-each>
	</xsl:template>

	<xsl:template name="html-element">
		<xsl:param name="element"/>
		<xsl:param name="target"> </xsl:param>
		<xsl:param name="action"> </xsl:param>
		<xsl:param name="anchor"> </xsl:param>
		<xsl:param name="size"> </xsl:param>
		<xsl:param name="readonly"> </xsl:param>
		<xsl:param name="onmouseover"> </xsl:param>
		<xsl:param name="class"> </xsl:param>
		<xsl:param name="name"> </xsl:param>
		<xsl:param name="alt"> </xsl:param>
		<xsl:param name="query-string"> </xsl:param>
		<xsl:param name="ondblclick"> </xsl:param>
		<xsl:param name="onkeydown"> </xsl:param>
		<xsl:param name="onsubmit"> </xsl:param>
		<xsl:param name="href"> </xsl:param>
		<xsl:param name="accept-charset"> </xsl:param>
		<xsl:param name="tabindex"> </xsl:param>
		<xsl:param name="onblur"> </xsl:param>
		<xsl:param name="selected"> </xsl:param>
		<xsl:param name="text"> </xsl:param>
		<xsl:param name="accesskey"> </xsl:param>
		<xsl:param name="onmouseup"> </xsl:param>
		<xsl:param name="title"> </xsl:param>
		<xsl:param name="disabled"> </xsl:param>
		<xsl:param name="multiple"> </xsl:param>
		<xsl:param name="onmousedown"> </xsl:param>
		<xsl:param name="id"> </xsl:param>
		<xsl:param name="onclick"> </xsl:param>
		<xsl:param name="onkeypress"> </xsl:param>
		<xsl:param name="maxlength"> </xsl:param>
		<xsl:param name="onhelp"> </xsl:param>
		<xsl:param name="value"> </xsl:param>
		<xsl:param name="onmousemove"> </xsl:param>
		<xsl:param name="onselect"> </xsl:param>
		<xsl:param name="onreset"> </xsl:param>
		<xsl:param name="style"> </xsl:param>
		<xsl:param name="onfocus"> </xsl:param>
		<xsl:param name="onmouseout"> </xsl:param>
		<xsl:param name="onkeyup"> </xsl:param>
		<xsl:param name="method"> </xsl:param>
		<xsl:param name="enctype"> </xsl:param>
		<xsl:param name="onchange"> </xsl:param>
		<xsl:param name="type"> </xsl:param>
		<xsl:element name="{$element}">
			<xsl:if test="$target!=''">
				<xsl:attribute name="target"><xsl:value-of select="$target"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$action!=''">
				<xsl:attribute name="action"><xsl:value-of select="$action"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$anchor!=''">
				<xsl:attribute name="anchor"><xsl:value-of select="$anchor"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$size!=''">
				<xsl:attribute name="size"><xsl:value-of select="$size"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$readonly!=''">
				<xsl:attribute name="readonly"><xsl:value-of select="$readonly"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$onmouseover!=''">
				<xsl:attribute name="onmouseover"><xsl:value-of select="$onmouseover"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$class!=''">
				<xsl:attribute name="class"><xsl:value-of select="$class"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$name!=''">
				<xsl:attribute name="name"><xsl:value-of select="$name"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$alt!=''">
				<xsl:attribute name="alt"><xsl:value-of select="$alt"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$query-string!=''">
				<xsl:attribute name="query-string"><xsl:value-of select="$query-string"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$ondblclick!=''">
				<xsl:attribute name="ondblclick"><xsl:value-of select="$ondblclick"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$onkeydown!=''">
				<xsl:attribute name="onkeydown"><xsl:value-of select="$onkeydown"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$onsubmit!=''">
				<xsl:attribute name="onsubmit"><xsl:value-of select="$onsubmit"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$href!=''">
				<xsl:attribute name="href"><xsl:value-of select="$href"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$accept-charset!=''">
				<xsl:attribute name="accept-charset"><xsl:value-of select="$accept-charset"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$tabindex!=''">
				<xsl:attribute name="tabindex"><xsl:value-of select="$tabindex"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$onblur!=''">
				<xsl:attribute name="onblur"><xsl:value-of select="$onblur"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$selected!=''">
				<xsl:attribute name="selected"><xsl:value-of select="$selected"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$accesskey!=''">
				<xsl:attribute name="accesskey"><xsl:value-of select="$accesskey"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$onmouseup!=''">
				<xsl:attribute name="onmouseup"><xsl:value-of select="$onmouseup"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$title!=''">
				<xsl:attribute name="title"><xsl:value-of select="$title"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$disabled!=''">
				<xsl:attribute name="disabled"><xsl:value-of select="$disabled"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$multiple!=''">
				<xsl:attribute name="multiple"><xsl:value-of select="$multiple"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$onmousedown!=''">
				<xsl:attribute name="onmousedown"><xsl:value-of select="$onmousedown"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$id!=''">
				<xsl:attribute name="id"><xsl:value-of select="$id"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$onclick!=''">
				<xsl:attribute name="onclick"><xsl:value-of select="$onclick"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$onkeypress!=''">
				<xsl:attribute name="onkeypress"><xsl:value-of select="$onkeypress"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$maxlength!=''">
				<xsl:attribute name="maxlength"><xsl:value-of select="$maxlength"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$onhelp!=''">
				<xsl:attribute name="onhelp"><xsl:value-of select="$onhelp"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$value!=''">
				<xsl:attribute name="value"><xsl:value-of select="$value"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$onmousemove!=''">
				<xsl:attribute name="onmousemove"><xsl:value-of select="$onmousemove"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$onselect!=''">
				<xsl:attribute name="onselect"><xsl:value-of select="$onselect"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$onreset!=''">
				<xsl:attribute name="onreset"><xsl:value-of select="$onreset"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$style!=''">
				<xsl:attribute name="style"><xsl:value-of select="$style"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$onfocus!=''">
				<xsl:attribute name="onfocus"><xsl:value-of select="$onfocus"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$onmouseout!=''">
				<xsl:attribute name="onmouseout"><xsl:value-of select="$onmouseout"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$onkeyup!=''">
				<xsl:attribute name="onkeyup"><xsl:value-of select="$onkeyup"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$method!=''">
				<xsl:attribute name="method"><xsl:value-of select="$method"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$enctype!=''">
				<xsl:attribute name="enctype"><xsl:value-of select="$enctype"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$onchange!=''">
				<xsl:attribute name="onchange"><xsl:value-of select="$onchange"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="$type!=''">
				<xsl:attribute name="type"><xsl:value-of select="$type"/></xsl:attribute>
			</xsl:if>
			<xsl:copy-of select="$text"/>
		</xsl:element>
	</xsl:template>

</xsl:stylesheet>

